package to;

import java.io.Serializable;
import java.text.SimpleDateFormat;
import java.util.Date;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.persistence.Transient;

@Entity
@Table(name = "tbl_amostra")
public class Amostra implements Serializable {

	@Id
	@GeneratedValue
	private Integer codigo;

	@Column
	private Integer idade;

	@Column
	private String cultura;

	@Column
	private Date dataDaAmostra;

	@Column
	private Double profundidade;

	@Column
	private String responsavel;

	@Column
	private String Status;

	@Column
	private String recomendacaoSolicitada;

	@ManyToOne(cascade = CascadeType.ALL)
	private Vegetacao vegetacao;

	@ManyToOne(cascade = CascadeType.ALL)
	private Topografia topografia;

	@Column
	private String gleba;

	@ManyToOne(cascade = CascadeType.ALL)
	private Propriedade propriedade;

	@Column
	private String observacao;

	public String getStatus() {
		return Status;
	}

	public void setStatus(String status) {
		Status = status;
	}

	public String getCultura() {
		return cultura;
	}

	public void setCultura(String cultura) {
		this.cultura = cultura;
	}

	public Date getDataDaAmostra() {
		return dataDaAmostra;
	}

	public void setDataDaAmostra(Date dataDaAmostra) {
		this.dataDaAmostra = dataDaAmostra;
	}

	public Integer getCodigo() {
		return codigo;
	}

	public void setCodigo(Integer codigo) {
		this.codigo = codigo;
	}

	public Integer getIdade() {
		return idade;
	}

	public void setIdade(Integer idade) {
		this.idade = idade;
	}

	public Double getProfundidade() {
		return profundidade;
	}

	public void setProfundidade(Double profundidade) {
		this.profundidade = profundidade;
	}

	public String getResponsavel() {
		return responsavel;
	}

	public void setResponsavel(String responsavel) {
		this.responsavel = responsavel;
	}

	public Vegetacao getVegetacao() {
		return vegetacao;
	}

	public void setVegetacao(Vegetacao vegetacao) {
		this.vegetacao = vegetacao;
	}

	public Topografia getTopografia() {
		return topografia;
	}

	public void setTopografia(Topografia topografia) {
		this.topografia = topografia;
	}

	public String getGleba() {
		return gleba;
	}

	public void setGleba(String gleba) {
		this.gleba = gleba;
	}

	public Propriedade getPropriedade() {
		return propriedade;
	}

	public void setPropriedade(Propriedade propriedade) {
		this.propriedade = propriedade;
	}

	public String getObservacao() {
		return observacao;
	}

	public void setObservacao(String observacao) {
		this.observacao = observacao;
	}

	public String getRecomendacaoSolicitada() {
		return recomendacaoSolicitada;
	}

	public void setRecomendacaoSolicitada(String recomendacaoSolicitada) {
		this.recomendacaoSolicitada = recomendacaoSolicitada;
	}

	public String getCodigoFormatado() {

		return String.format("%6d", codigo);

	}
	
	public String getDataAmostraFormatada() {
		SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");	
		return sdf.format(dataDaAmostra);
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Amostra other = (Amostra) obj;
		if (codigo == null) {
			if (other.codigo != null)
				return false;
		} else if (!codigo.equals(other.codigo))
			return false;
		return true;
	}
}